package com.f21.f21assessoria.dao;


import org.hibernate.SessionFactory;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.f21.f21assessoria.controller.UsuarioController;
import com.f21.f21assessoria.enums.Perfis;
import com.f21.f21assessoria.model.cadastro.Usuario;
import com.f21.f21assessoria.model.modalidade.Turma;


@Repository("user")
@Transactional(propagation=Propagation.REQUIRED)
public class UsuarioDaoImp extends CrudDaoImp<Usuario> implements UsuarioDao, Serializable {

	private static final long serialVersionUID = 1L;

public void addTurma() {
	
}


public Usuario buscarPorId(long id) {
	return (Usuario) getSessionFactory().getCurrentSession().get(Usuario.class, id);
}


@SuppressWarnings("unchecked")
@Override
public List<Usuario> listarTodos() {
	ArrayList<Usuario> arrayList = (ArrayList<Usuario>) sessionFactory.getCurrentSession().createQuery("from Usuario").list();
	return  arrayList;
	
}

public List<Usuario> listarTodosPerfil(Perfis perfil){
	return (List<Usuario>) sessionFactory.getCurrentSession().createQuery("from Usuario u where :p in elements(u.perfis)")
 .setParameter("p", perfil.getValue()).list();
	
}

@Override
public List<Usuario> listarTodos(String classe) {
	return listarTodos();
}
}
